//
// Created by francklinson on 2021/11/26 AT 10:01.
// May Saint Diana bless you!
//

/**RAII ：资源申请即初始化
 * 智能指针确保在任何情况下，动态分配的内存都能得到正确释放，从而将开发人员从这项任务中解放了出来。 这
 * 包括程序因为异常而中断，原本用于释放内存的代码被跳过的场景。
 */

#include <windows.h>

// windows_handle 类确保当一个资源不再使用时就能正确的关闭。
class windows_handle {
public:
    // 构造函数
    windows_handle(HANDLE h)
            : handle_(h) {
    }

    // 析构函数 调用CloseHandle
    // 通过 OpenProcess() 打开的资源不需要显式的调用 CloseHandle() 来关闭。 当然，应用程序终止时资源也会随之关闭。
    ~windows_handle() {
        CloseHandle(handle_);
    }

    HANDLE handle() const {
        return handle_;
    }

private:
    HANDLE handle_;
};

int main() {
    windows_handle h(OpenProcess(PROCESS_SET_INFORMATION, FALSE, GetCurrentProcessId()));
    SetPriorityClass(h.handle(), HIGH_PRIORITY_CLASS);
}
